为什么还需要 IP
复习
- 交换机:通过转发表把帧定向送到目的端口
- 无线网络:无线接入点协调设备发送,应对隐藏节点
- 协议分层与封装:协议分层把通信问题拆成互相协作的职责
TL;DR
- MAC 地址只适合本地链路,无法体现网络位置
- IP 地址让彼此独立的网络可以互相连接
- “网络部分 + 主机部分”的层次结构,让路由器可以按范围转发
正文
我们已经用 MAC 地址和交换机把局域网玩得很顺了。那为什么还要再发明一套地址?直接用 MAC 地址走遍天下,不行吗?
不行,而且原因很实际。
平铺的地址,撑不起全世界
交换机只认识本地端口,它不知道世界上每张网卡的位置。设想一下:如果全球所有的设备都只靠 MAC 地址通信,那么每一台路由器都得保存“全世界所有网卡的去向”这样一张表。
这张表会有多大?几乎是全世界设备的总数。而且任何一台设备换个位置,这张表就得更新。平铺的地址没有层次,也就无法汇总,规模一大就彻底崩了。
这就像一个国家的邮政系统,如果每个地址都必须精确到“某个人现在站在哪里”,而没有“省—市—街道”的层次,分拣和投递根本无法进行。
给地址加上层次
IP 的做法,是给地址引入层次:把地址分成网络部分和主机部分。
- 网络部分说明“你在哪个网络”
- 主机部分说明“你是这个网络里的哪一台”
这样一来,路由器就不必记住每一台主机,它只需知道“发往某个网络,该走哪条路”。同一网络里的大量设备,被聚合成一条路由记录。用层次换来了可扩展性,这正是上一章那道“平铺地址撑不住”的题的解。
所以,IP 地址和 MAC 地址并不冲突,它们分工不同:一个负责端到端地指明“去哪个网络的哪台机器”,一个负责在每一跳的本地链路上“交给哪张网卡”。两者配合,才把本地网络接成了互联网。
接下来,我们看看这个 IP 数据包长什么样。
思考题 1
为什么路由器不直接靠 MAC 地址把帧送往全世界?
思考题 2
IP 用“网络部分 + 主机部分”的层次来解决扩展问题。这和现实中哪些寻址方式很像?
小结
知识点
- MAC 地址没有网络位置信息,不适合全球路由
- IP 为跨网络交付提供可聚合的层次地址
- 路由器按网络范围转发,而非记住每台主机
参考资料
- Wikipedia(zh):IP地址:为网络接口分配的可路由地址
- Wikipedia(zh):路由器:在不同网络之间转发数据包的设备
思考题答案(仅供参考)
思考题 1
MAC 地址没有体现网络位置,全球转发表会难以扩展:路由器不得不记住每一台设备的去向,且任何变动都要更新。缺少层次,就无法把大量地址聚合成少量路由记录,规模一大就难以维护。
思考题 2
和电话区号、邮政地址都很像。电话号码用区号先定位到一片区域,再定位到具体号码;信件先用“省—市—街道”定位到范围,再落到具体门牌。它们都先缩小范围、再精确到个体,从而让整个系统可扩展。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图

设计师 | 南国微雪